# 字节跳动：客户端笔试。 4道算法题，120分钟

# 题目1 
"""
题目：
部队需要执行任务，挑选合适的人， 然后通过性格测试选拔人才

性格测试一共有 5种性格类型 A B C D E，  规定的 性格可能有 M个维度(0 <= M <= 1000):
(比如说士兵甲： ACDBEA  这个性格有6个维度， M = 6)
A B C D E 里的越近，性格月符合， 比如说： AB AE ,AB差1， AE差4， AB性格更符合. 
要注意 AE BD CE 这些为冲突个性！ 他们之间不能匹配（可以认为差为 无穷大）

现在要发布 一项任务选择合适的人做
输入用例：
5 3
ABCDE
ACEBC
AAABC
BCABE

输出： BCABE (没计算，假设最后一个最符合)


解释 :
输入：
M = 5, 表示性格由五个维度组成。N = 3 表示有三名士兵可筛选，(0 <= N <= 10000)
第一行为 最优性格， 剩下三行为 三个士兵的性格。 

输出：
所有通过性格测试得 性格，返回最优的 "所有" 士兵性格！
如果没有 返回 None
"""


# 题目2
"""
1， 11 ，22 这样的每位相同的数字， 给你个范围[x, y] ,让你找这个范围内的，所有这样的数子的个数
"""


# 题目三，记不太清了，想起来再写
"""
有一个商店, 然后向外发放优惠券。 优惠券是有优先级的。 每个客人凭借相应规则获得，对应的优惠券。
一个客人可能可以 有资格拿 多种优惠券。 那是规定每个人只能拿一张优惠券，且是优先级最高的。

有一个经理想统计一下信息， 进行数据分析。但是 丢失了优惠券的信息， 只有对应的客户获得优惠券的信息，
根据信息，求得优惠券的优先级，按照从低到高返回( PS: 隐约记得，这里好像说一句话是按照啥字典序？ 可能不止一种？
                            不清楚，这道题我也没看懂测试用例咋算的)


测试用例:
输入：
5 3
3 5 4 2
3 1 3 5
2 2 4

输出： 1 3 5 2 4

解释：
第一行 5 代表有五种类型优惠券, 第二个 3代表发个三个客人。
下面三行， 第一个数字，代表的是该客户有机会得到几种优惠券，第二个数字实际得到的优惠券
例如 第二行， 可以获得三个优惠券， 实际获得的是 “5” 这张优惠券（这张优惠券级别最高）


# 下面是分析，为何得出这个结果（我自己的想法）
1. 首先通过第一个知道： 5 > 4 和 2
2. 通过第二个知道： 1 > 3 和 5
3. 第三个知道： 2 > 4

那么通过 1. 3. 可以知道， 5 > 2 > 4
通过 2. 知道 ：  1 > 5 > 2 > 4

到这里我就不知道怎么判断出来 5 和 3的关系了， 回想一下，不知道题目有没有讲字典序， 即使 5 和 3的关系
判断不出来，都算上。  但是答案只有一种，就是： 1 3 5 2 4

我有猜想  客户根据某些规则，可以得到相应的 优惠券， 客户2 只能得到 1 3 ，确不得到5， 是否说明 3 > 5 呢？
没有理解，分析不出来这里，当时读题的时候， 不知道是否还有细节，怎么也不知道 怎么推导出来的~~
"""


# 题目四：分发糖果 (没理解测试用例)
"""
一共有 n 个小朋友，站成一排。 小明给他们每人发 list[1], list[2], list[3]....list[n] 个糖果。
（实际上有个n长度列表，每个对应位置元素，代表该下标对应孩子已有的糖果数）

(重点来了)此时小明手里 还有 m个糖果， 从最左边 第一个小孩开始， 如果该小孩的糖果数加1 <= 其后的小孩糖果，
那么这颗糖果就给这个小孩， 否则给其后的小孩， 一直重复这个过程。 默认到达最后一个小孩，最后一个小孩不想要糖果了，
那么最后一颗糖果 给 小明， 如果剩的还多， 继续从第一个开始，循环。

大概问题是这样的，按理说很好理解，但是我也觉得题目描述不清~~ 一直搞不懂测试用例。 如果最后 第 m个糖给小明，
那就 返回 n加1， 否则返回拿糖的那个小孩下标

测试用例
3
1 2 3 4

输出： 1 （这里不理解，为啥给第一个小朋友，按理说 给1， 给 2， 3 + 1 <= 4, 最后第m颗应该给 3， 但是最后一颗给1！！？）
"""


# 题目大部分都是长篇大论，我是按照我的 理解，和记忆，大概复述一下题目~~~



